package com.zx.map.dao;

import com.zx.map.dao.model.BaseAcctInfo;
import com.zx.map.dao.model.BaseAcctInfoExample;
import org.springframework.dao.DataAccessException;

import java.util.List;

public interface BaseAcctInfoDao {

    /**
     * 新增
     *
     * @param BaseAcctInfo
     * @return
     * @throws DataAccessException
     */
    public String add(BaseAcctInfo BaseAcctInfo) throws DataAccessException;

    /**
     * 更新
     *
     * @param BaseAcctInfo
     * @return
     * @throws DataAccessException
     */
    public String update(BaseAcctInfo BaseAcctInfo) throws DataAccessException;

    /**
     * 删除
     *
     * @param BaseAcctInfo
     * @throws DataAccessException
     */
    public void delete(BaseAcctInfo BaseAcctInfo) throws DataAccessException;

    /**
     * 分页查询
     *
     * @param pageSize
     * @param pageBegin
     * @param example
     * @return
     * @throws DataAccessException
     */
    public List<BaseAcctInfo> getPageByExample(int pageSize, int pageBegin,
                                               BaseAcctInfoExample example) throws DataAccessException;

    /**
     * 根据Model查找List
     *
     * @param example
     * @return
     * @throws DataAccessException
     */
    public List<BaseAcctInfo> getListByExample(BaseAcctInfoExample example) throws DataAccessException;

    /**
     * 查找条数
     *
     * @param example
     * @return
     * @throws DataAccessException
     */
    public int countByExample(BaseAcctInfoExample example) throws DataAccessException;

    /**
     * 根据单Key查找Model
     *
     * @param key
     * @return
     * @throws DataAccessException
     */
    public BaseAcctInfo selectByPrimaryKey(String key) throws DataAccessException;

    /**
     * 根据单Key查找Model 同时加行锁
     *
     * @param key
     * @return
     * @throws DataAccessException
     */
    public BaseAcctInfo selectByPrimaryKeyAndLineLock(String key) throws DataAccessException;
    /**
     *账户余额 可用余额汇总
     */
    public double countAvlbal(BaseAcctInfoExample example);
    /**
     * 账户余额 冻结金额汇总
     */
    public double countFrzbal(BaseAcctInfoExample example);
}